<html>
<head>
<link rel="StyleSheet" href="jDesk.css" type="text/css">
<title>jDesk v0.73 Documentation</title>
</head>
<body>

<h1>jDesk v0.73</h1>
<p>
an advanced desktop for LiteStep<br>
version 0.711 by <a href="mailto:rabidcow@juno.com">RabidCow</a><br>
based off of version 0.70 by Chris Rempel (jugg)<br><br>
Modified and released as 0.72 by Seg@<br>
version 0.73 by <a href="mailto:ilmcuts_AT_gmx_DOT_net">ilmcuts</a><br>
</p>
<br>

<p>
The short story for everyone who knows everything about jDesk already:
This adds multimonitor support to jDesk.  The work area can be set on any and all
monitors seperately, and mouse clicks on monitors other than the primary will now
work.  On systems with only one monitor, you should not notice any difference.
(If you do, well, you shouldn't so stop it.)
</p>
<p>
For some reason I also converted to docs to HTML, mostly cut-and-paste from
<a href="oldreadme.txt">the original text file for 0.70</a>.
</p>

<br><br><br><br>

<h3 class="l"><a name="toc">ToC</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">

<p>
<ol>
<li><a href="#intro">Introduction</a>
<li><a href="#istall">Installation</a>
<li><a href="#commands">Commands</a>
<p><table><tr>
<td><p>
<ul>
<li><a href="#jdeskworkarea">jDeskWorkArea</a></li>
<li><a href="#jdeskworkaream">*jDeskWorkArea (multimonitor)</a></li>
<li><a href="#jdesksetworkarea">!jDeskSetWorkArea</a></li>
<li><a href="#jdesksetworkaream">!jDeskSetWorkArea (multimonitor)</a></li>
<li><a href="#jdeskresetworkarea">!jDeskResetWorkArea</a></li>
</ul></p><p>
<ul>
<li><a href="#jdeskdesktopfolder">jDeskDesktopFolder</a></li>
<li><a href="#jdeskdoubleclicktime">jDeskDoubleClickTime</a></li>
<li><a href="#jdeskclearworkareaonexit">jDeskClearWorkAreaOnExit</a></li>
<li><a href="#jdeskrecycleonrezchange">jDeskRecycleOnRezChange</a></li>
</ul></p>
</td>
<td><p>
<ul>
<li><a href="#jdeskdisablembutton">jDeskDisableMButton1</a></li>
<li><a href="#jdeskdisablembutton">jDeskDisableMButton2</a></li>
<li><a href="#jdeskdisablembutton">jDeskDisableMButton3</a></li>
<li><a href="#jdeskdisablembutton">jDeskDisableMButtonX1</a></li>
<li><a href="#jdeskdisablembutton">jDeskDisableMButtonX2</a></li>
<li><a href="#jdeskdisablemwheelscroll">jDeskDisableMWheelScroll</a></li>
<li><a href="#jdeskdisabledoubleclick">jDeskDisableDoubleClick</a></li>
<li><a href="#jdeskmbutton">*jDeskMButton1</a></li>
<li><a href="#jdeskmbutton">*jDeskMButton2</a></li>
<li><a href="#jdeskmbutton">*jDeskMButton3</a></li>
<li><a href="#jdeskmbutton">*jDeskMButtonX1</a></li>
<li><a href="#jdeskmbutton">*jDeskMButtonX2</a></li>
<li><a href="#jdeskmwheelscroll">*jDeskMWheelScroll</a></li>
</ul></p>
</td>
</tr></table></p>
<li><a href="#multimon">Multi-Monitor</a>
<p><table><tr><td><ul>
<li><a href="#monitornames">MonitorNames</a></li>
<li><a href="#jdeskworkaream">*jDeskWorkArea</a></li>
<li><a href="#jdesksetworkaream">!jDeskSetWorkArea</a></li>
</ul></td></tr></table></p>
<li><a href="#changes">Changes</a>
<li><a href="#tricks">Tips &amp; Tricks</a>
<li><a href="#booooring">Disclaimer</a>
</ol>
</p>

<br><br><br><br>
<br><br><br><br>

<h3 class="l"><a name="intro">I. Introduction</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">

<dl><dd>
<p>
Welcome, and thank you for deciding to try out this
enhanced Desktop replacement module for Win32
Shells that support the LiteStep module standard.
jDesk features improved performance, stability, and
customization over the Desktop that comes with
LiteStep. For example, jDesk can execute programs,
LiteStep action (bang) commands, and combinations
of any number of commands from a single mouse
click, or mouse/keyboard combination. Also, jDesk
can set your intial Work Area (amount of screen
real estate that a maximized window covers) as well
as changing the Work Area on the fly.
</p>
</dd></dl>

<br><br><br><br>
<br><br><br><br>

<h3 class="l"><a name="istall">II. Istallation</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">
<!-- damn right, istallation! -->

<dl><dd>
<p>
Extract "jDesk.dll" to your LiteStep directory
(c:\litestep\). Open up your step.rc (LiteStep
configuration file) and find the section where all
of your "LoadModule" lines are located. Remove or
comment out (using a semicolon) the "LoadModule"
line that contains "desktop.dll". Now, add a new
line that looks like this:
<pre>
LoadModule c:\litestep\jdesk.dll
</pre>
Of course, adjust the path as necessary. Save your
step.rc and issue the LiteStep Recycle command
(!Recycle).
</p>
<p>
There were 2 NOTEs here which you don't care about.
Use a litestep build without mold growing on it and 
all should be fine.
</p>
</dd></dl>

<br><br><br><br>
<br><br><br><br>

<h3 class="l"><a name="commands">III. Commands</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">

<p><dl>

<dt>
<pre><a name="jdeskworkarea">jDeskWorkArea</a> "0,0,0,0"</pre>
</dt>
<dd><ul>
<li>
    <p>
   Sets the initial Work Area (amount of screen
    real estate that a maximized window covers) of
    your Desktop for the primary monitor.
	</p>
<li>
<p>
   Accepts negative and positive decimal values,
    which combined create the WorkArea "box".
    Opposite sides must have a difference greater
    than 200. The order of values are:
	<pre>"&lt;left&gt;,&lt;top&gt;,&lt;right&gt;,&lt;bottom&gt;"</pre>
		</p>
    <p>
    *Note: If "<code>.none</code>" is specified for any of the
    values, then that value is unchanged from its
    previous state.
	</p>
<li>
<p>
   Defaults to: <code>"0,0,0,0"</code>
    *Note: This sets the WorkArea to full screen.
	</p>
</ul></dd>

<dt>
<pre><a name="jdeskdesktopfolder">jDeskDesktopFolder</a> ""</pre>
</dt>
<dd><ul>
<li>
<p>
   If used and set to a valid directory, it will
    enable drag and drop of files or folders onto
    the jDesk desktop area. Any file dropped on
    the desktop will be automatically copied into
    the folder specified. If the file exists, you
    will be prompted to overwrite. You can move files
    holding the SHIFT key or to create shortcuts
    holding the CTRL+SHIFT keys during dragging.<br>
    I suppose the best way is to use $Desktop$ folder
    for the most of the themes to enable drag-and-drop
    in them.
</p>
<li><p>
   Defaults to: No default. If not specified,
                 Drag&amp;Drop is not enabled.
				 </p>
</ul></dd>

<dt>
<pre><a name="jdeskdoubleclicktime">jDeskDoubleClickTime</a> "750"</pre>
</dt>
<dd><ul>
<li><p>
   Sets the time jDesk waits to see if a double
    click happens after the first click is
    received.
	</p>
<li><p>
   Defaults to: System DoubleClick time.
    *Note: It is suggested to not set this value.
	</p>
</ul></dd>

<dt>
<pre><a name="jdeskclearworkareaonexit">jDeskClearWorkAreaOnExit</a></pre>
</dt>
<dd><ul>
<li><p>
  If set, Work Area will be restored to full
    screen when jDesk is unloaded.
	</p>
	<li><p>
   boolean value: true if set, otherwise false.
   </p>
</ul></dd>

<dt>
<pre><a name="jdeskrecycleonrezchange">jDeskRecycleOnRezChange</a></pre>
</dt>
<dd><ul>
<li><p>
   If set, jDesk requests a recycle of the shell
    after a Screen resolution change.
</p>
<li><p>
   boolean value: true if set, otherwise false.
</p>
</ul></dd>

<dt>
<pre><a name="jdeskdisablembutton">jDeskDisableMButton1
jDeskDisableMButton2
jDeskDisableMButton3
jDeskDisableMButtonX1
jDeskDisableMButtonX2</a></pre>
</dt>
<dd><ul>
<li><p>
   If set, all jDesk Mouse Button functionality
    is disabled for the corresponding mouse button
</p>
<li><p>
   boolean value: true if set, otherwise false.
</p>
</ul></dd>

<dt>
<pre><a name="jdeskdisablemwheelscroll">jDeskDisableMWheelScroll</a></pre>
</dt>
<dd><ul>
<li><p>
   If set, all jDesk Mouse Wheel Scroll
    functionality is disabled.
</p>
<li><p>
   boolean value: true if set, otherwise false.
</p>
</ul></dd>

<dt>
<pre><a name="jdeskdisabledoubleclick">jDeskDisableDoubleClick</a></pre>
</dt>
<dd><ul>
<li><p>
   If set, all jDesk ignores Double Click actions and
    immediately executes the up action command instead
    of waiting to see if a double click is being
    executed.
</p>
<li><p>
   boolean value: true if set, otherwise false.
</p>
</ul></dd>

<dt>
<pre><a name="jdeskmbutton">*jDeskMButton1
*jDeskMButton2
*jDeskMButton3
*jDeskMButtonX1
*jDeskMButtonX2</a></pre>
</dt>
<dd><ul>
<li><p>
   parameters:
    <code>[&lt;modkey&gt;;&lt;down-cmd&gt;;&lt;up-cmd&gt;;&lt;dblclick-cmd&gt;]</code>
</p><p>
    <code>&lt;modkey&gt;</code> can be one of the following
	<ul>
      <li>SHIFT
      <li>CTRL
      <li>CTRL+SHIFT
	  </ul>
</p><p>
  <code>&lt;down-cmd&gt;<br>
  &lt;up-cmd&gt;<br>
    &lt;dblclick-cmd&gt;</code><br>
	<ul>
      can be any !Bang command or executable that
      is to be executed.
	  </ul>
</p>
<li><p>
   Multiple settings of this definition are
    allowed, but only one definition using the same
    modkey is allowed.
</p>
<li><p>
   If no definitions are specified, Button is
    disabled.
</p>
</ul></dd>

<dt>
<pre><a name="jdeskmwheelscroll">*jDeskMWheelScroll</a></pre>
</dt>
<dd><ul>
<li><p>
   parameters:
    <code>[&lt;modkey&gt;;&lt;down-cmd&gt;;&lt;up-cmd&gt;]</code>
</p><p>
    <code>&lt;modkey&gt;</code> can be one of the following
	<ul>
      <li>SHIFT
      <li>CTRL
      <li>CTRL+SHIFT
	  </ul>
</p><p>
  <code>&lt;down-cmd&gt;<br>
  &lt;up-cmd&gt;</code><br>
	<ul>
      can be any !Bang command or executable that
      is to be executed.
	  </ul>
</p>
<li><p>
   Multiple settings of this definition are
    allowed, but only one definition using the same
    modkey is allowed.
</p>
<li><p>
   If no definitions are specified, Wheel Scroll
    is disabled.
</p>
</ul></dd>

<dt>
<pre><a name="jdesksetworkarea">!jDeskSetWorkArea</a> "0,0,0,0"</pre>
</dt>
<dd><ul>
<li><p>
   Sets the WorkArea for the primary monitor.
   Same as "<code><a href="#jdeskworkarea">jDeskWorkArea</a></code>"
    setting, except in a !Bang command version.
</p>
<li><p>
   Accepts negative and positive decimal values,
    which combined create the WorkArea "box".
    Opposite sides must have a difference greater
    than 200. The order of values are:
        <pre>"&lt;left&gt;,&lt;top&gt;,&lt;right&gt;,&lt;bottom&gt;"</pre>
</p><p>
    *Note: If "<code>.none</code>" is specified for any of the
    values, then that value is unchanged from its
    previous state.
</p>
<li><p>
   If no parameters are specified, the WorkArea is
    set to full screen.
</p>
</ul></dd>

<dt>
<pre><a name="jdeskresetworkarea">!jDeskResetWorkArea</a></pre>
</dt>
<dd><ul>
<li><p>
   Resets the WorkArea for the primary monitor to the initial values
    specified by "<code><a href="#jdeskworkarea">jDeskWorkArea</a></code>".
</p>
</ul></dd>

</dl></p>
<br><br><br><br>
<br><br><br><br>

<h3 class="l"><a name="multimon">IV. Multi-Monitor</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">

<p><dl>

<dt>
<pre><a name="monitornames">MonitorNames</a> &lt;list of monitor names&gt;</pre>
</dt>
<dd>
<p>
This specifies the names of the monitors on your system.  These are only used in 
step.rc and don't have anything to do with the names in control panel.
Monitor names are all listed on the same line, separated by spaces.  The primary
monitor is the first one, and the rest follow in order.
The special name "<code>all</code>" is reserved and refers to the total
combined workspace of all monitors.
</p>
</dd>
<dd class="example">
<p>
If you have three monitors and the second one (according to the order
given in control panel) is the primary one,
<pre>  MonitorNames pri one two</pre>
will name monitor 1 "<code>one</code>", monitor 2 "<code>pri</code>", 
and monitor 3 "<code>two</code>"
</p>
</dd>
<dd>
<p>
"<code>left</code>" and "<code>right</code>" might be good monitor
names if you're creating a left/right monitor based theme.  If someone wants to use
your theme with monitors on opposite sides, they only have to swap the order in the
<code>MonitorNames</code> line and all supporting modules will adjust.
</p>
</dd>

<dt>
<pre><a name="jdeskworkaream">*jDeskWorkArea</a> monitor "0,0,0,0"</pre>
</dt>
<dd><ul>
<li><p>
   Sets the initial Work Area (amount of screen
    real estate that a maximized window covers) of
    your Desktop for the specified monitor.
	</p>
<li>
<p>
   Accepts negative and positive decimal values,
    which combined create the WorkArea "box".
    Opposite sides must have a difference greater
    than 200. The order of values are:
	<pre>"&lt;left&gt;,&lt;top&gt;,&lt;right&gt;,&lt;bottom&gt;"</pre>
		</p>
    <p>
    *Note: If "<code>.none</code>" is specified for any of the
    values, then that value is unchanged from its
    previous state.
	</p>
<li>
<p>
   Defaults to: <code>"0,0,0,0"</code>
    *Note: This sets the WorkArea to full screen.
	</p>
</ul></dd>

<dt>
<pre><a name="jdesksetworkaream">!jDeskSetWorkArea</a> monitor "0,0,0,0"</pre>
</dt>
<dd><ul>
<li><p>
   Sets the WorkArea for the specified monitor.
   Same as "<code><a href="#jdeskworkaream">*jDeskWorkArea</a></code>"
    setting, except in a !Bang command version.
</p>
<li><p>
   Accepts negative and positive decimal values,
    which combined create the WorkArea "box".
    Opposite sides must have a difference greater
    than 200. The order of values are:
        <pre>"&lt;left&gt;,&lt;top&gt;,&lt;right&gt;,&lt;bottom&gt;"</pre>
</p><p>
    *Note: If "<code>.none</code>" is specified for any of the
    values, then that value is unchanged from its
    previous state.
</p>
<li><p>
   If no parameters are specified, the WorkArea is
    set to full screen.
</p>
</ul></dd>

</dl></p>

<br><br><br><br>
<br><br><br><br>

<h3 class="l"><a name="changes">V. Changes</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">

<p>
<dl>

<dt>v0.73 <small class="date">2004-01-09</small></dt>
<dd>
<ul>
<li><p>Fixed !jDeskSetWorkArea not interpreting .none correctly.</p>
</ul>
</dd>

<dt>v0.72 <small class="date">2003-12-10</small></dt>
<dd>
<ul>
<li><p>Improved drag-and-drop support:<br>
<ul>
<li>Custom copy procedure replaced with more powerfull SHFileOperations,
so it is possible to drag folders now.</li>
<li> Also added shortcuts creating and file/folders moving:<br>
Hold the SHIFT key during drag to move instead of default copy operation<br>
Hold the CTRL+SHIFT keys to create shortcut(s)
</li>
</ul>
</p>
</ul>
</dd>


<dt>v0.711 <small class="date">2002-05-22</small></dt>
<dd>
<ul>
<li><p>Fixed Multi-Monitor settings.</p>
</ul>
</dd>

<dt>v0.71 <small class="date">2002-05-08</small></dt>
<dd>
<ul>
<li><p>Added Multi-Monitor settings.</p>
</ul>
</dd>
</dl>
For older changes, refer to <a href="oldreadme.txt">the old text docs</a>.
</p>

<br><br><br><br>
<br><br><br><br>

<h3 class="l"><a name="tricks">VI. Tips &amp; Tricks</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">

<p><dl>
<dd><ul><li>
To get the Wheel Scroll to work, you need to
click on the desktop to activate it first. To be
able to do this, set the following (or similar):
<pre><a href="#jdeskmbutton">*jDeskMButton3</a> [.none;!none;!none;!none]</pre>
Then after you click on the Desktop with Button3,
you will be able to execute your wheel scroll
commands.
</ul></dd>
<dt>&nbsp;</dt>
<dd><ul><li>
Sample commands:
<pre><a href="#jdeskmbutton">*jDeskMButton1</a> [.none;!TasksHide;!TasksMove !TasksShow;!none]
<a href="#jdeskmbutton">*jDeskMButton2</a> [.none;!TasksHide;!Popup;!none]
<a href="#jdeskmbutton">*jDeskMButton3</a> [CTRL;!none;!about;!about detailed]</pre>
</ul></dd><!--  Aww, how cute!  before systray became standard!
<dd><ul><li>
 If you want to have a System Tray, download
"systray.dll", created by Maduin, from
http://maduin.dasoft.org/  This is a fully featured
skinnable System Tray that can be placed anywhere
on your Desktop. Other alternatives are grdTray
and the systray2.dll bundled with recent LiteStep
builds.
</ul></dd><dd><ul><li>
<p>
 If you want a Task Manager to have access to your
currently running applications you can use
"tasks.dll" available from
http://jugg.logicpd.com/software/
</p><p>
Or you can get "traytasks.dll", created by Sergey
Trofimov (requires "systray.dll" to run with jDesk)
TrayTasks is available from:
http://www.tv4studios.com/st/litestep/modules.html
</p><p>
There are other alternatives including several
Task Managers for the Wharf and Popups.
</p>
</ul></dd>-->
<dt>&nbsp;</dt>
<dd><ul><li>
 If you want to have AutoRun capabilities you need
to get "autorun.dll", created by Visigoth<!--, from
http://visigoth.litestep.com/-->
</ul></dd>
<dt>&nbsp;</dt>
<dd><ul><li>
 If you are having trouble with "application bars"
showing up along the bottom of your screen when you
minimize an application, this is because you need
to get a Task Manager that supports hiding
Minimized Application Bars. If you are running
"tasks.dll" you can hide those bars by adding the
command "<code>TasksHideMinAppBar</code>".
</ul></dd>
<dt>&nbsp;</dt>
<dd><ul><li><p>
 If you are running Windows NT, and you change the
Left side of the WorkArea from zero "0" to any
other value, it may mess up the rest of the
settings. This is not a jDesk specific bug. All
modules that use SystemParametersInfo/
SPI_SETWORKAREA functionality has this problem. A
solution is being looked into.</p>
<p><small>(is this still true?)</small></p>
</ul></dd>
<dt>&nbsp;</dt>
<dd><ul><li>
 If you are using the Wharf with jDesk, and you
do NOT want the Wharf to resize the WorkArea when
it docks to the side of the screen add the command
"<code>SetDesktopArea</code>" to your "step.rc" file.
</ul></dd>
</dl></p>

<br><br><br><br>
<br><br><br><br>

<h3 class="l"><a name="booooring">VII. Disclaimer</a></h3><br><h4></h4><div class="hr"></div>
<br clear="left">

<p><dl>
<dd class="legality">
<pre>
Copyright &copy; 1999, Chris Rempel
Copyright &copy; 2002, Joshua Seagoe
To write myself here or not to write? ;) //Seg@

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT  WARRANTY
OF ANY KIND, EXPRESS OR  IMPLIED, INCLUDING BUT NOT
LIMITED  TO  THE   WARRANTIES  OF  MERCHANTABILITY,
FITNESS  FOR   A   PARTICULAR   PURPOSE   AND  NON-
INFRINGEMENT.  IN  NO  EVENT  SHALL THE  AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,  DAMAGES
OR  OTHER  LIABILITY,   WHETHER  IN  AN  ACTION  OF
CONTRACT,  TORT OR OTHERWISE,  ARISING FROM, OUT OF
OR IN CONNECTION  WITH  THE  SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.
</pre>
</dd>
</dl></p>

<br><br><br><br>
<br><br><br><br>

</body>
</html>

